Imports Common
Imports Common.Env
Imports Microsoft.VisualBasic.CompilerServices
Imports StartFrame.DA
Imports StartFrame.SystemFunctions
Imports System
Imports System.Collections
Imports System.Data
Imports System.Text

Public Class Ayuda
    Public Shared Function AyudaExtendida(nm_programa As String) As String
        Dim sb As New Text.StringBuilder
        Try
            'Busca la doc. de ayuda de las tablas del programa
            Dim campos, tablas, cond, orden As String
            Dim strAux As String
            Dim dsTablas, dsCampos As DataSet
            Dim rowTabla, rowCampo As DataRow
            Dim esqTabla As DataTable
            Dim col As DataColumn
            Dim i, j As Integer

            campos = "rel.nm_tabla, rel.de_relacion, tab.de_tabla, wp.de_ayuda"
            tablas = "wld_tablas_programa rel"
            tablas &= " join wad_tablas tab on tab.nm_tabla = rel.nm_tabla"
            tablas &= " join wad_programas wp on rel.nm_programa = wp.nm_programa "
            cond = "rel.nm_programa = " & SystemFunctions.Strings.StringToSql(nm_programa)
            orden = "rel.nu_orden"

            dsTablas = DA.Sql.Select(ConnectionString, campos, tablas, cond, orden)



            If dsTablas.Tables(0).Rows.Count > 0 Then
                sb.AppendFormat("<div class='cssAyudaDescripcion'>{0}</div>", dsTablas.Tables(0).Rows(0)("de_ayuda"))
                sb.Append("<div class='cssTablasRelacionadas'>TABLAS RELACIONADAS</div>")
                i = 0
                For Each rowTabla In dsTablas.Tables(0).Rows
                    'Arma la ayuda extendida con info de la tabla
                    i += 1
                    sb.Append("<div class='cssTablaTitulo'>")
                    sb.Append(i.ToString.TrimEnd & ".- " & CType(rowTabla("nm_tabla"), String).TrimEnd & " (" & CType(rowTabla("de_relacion"), String).TrimEnd & ")")
                    sb.Append("</div><div class='cssTablaDescripcion'>")
                    sb.Append(CType(rowTabla("de_tabla"), String))
                    sb.Append("</div>")

                    'Busca la doc. de ayuda de los campos de cada tabla
                    campos = "nm_campo, de_campo"
                    tablas = "wad_campos"
                    'orden = "nm_campo"

                    esqTabla = DA.Sql.GetSchema(ConnectionString, CType(rowTabla("nm_tabla"), String).ToLower)

                    cond = "nm_campo IN("
                    For Each col In esqTabla.Columns
                        cond &= SystemFunctions.Strings.StringToSql(col.ColumnName.ToUpper.TrimEnd) & ","
                    Next
                    cond = cond.Substring(0, cond.Length - 1) & ")"
                    dsCampos = DA.Sql.Select(ConnectionString, campos, tablas, cond)

                    j = 0
                    For Each rowCampo In dsCampos.Tables(0).Rows
                        'Arma la ayuda extendida con info del campo
                        j += 1
                        strAux = Common.Display.FieldToText(CType(rowCampo("nm_campo"), String), Common.Display.FormatoMnemotecnicos.LARGO).Replace(":", "")
                        sb.Append("<div class='cssCampoTitulo'> (" & strAux & ") </div>")
                        sb.Append("<div class='cssCampo'>" & rowCampo("de_campo").ToString() & "</div>")
                    Next
                Next    'Siguiente tabla
            Else
                sb.Append("<div class='cssSinInformacion'>No hay ayuda disponible para la clase: " & nm_programa & "</div>")
            End If
        Catch ex As Exception
            Return String.Empty
        End Try
        Return sb.ToString()
    End Function

End Class
